// Copyright 2022 a.o.smith ALL Rights Reserved
package com.liuxinlong.modules.chimi.service;

import com.liuxinlong.modules.entity.BarCard;
import com.liuxinlong.modules.entity.BarComment;

import java.util.List;
import java.util.Map;

/**
 * 用户论坛浏览服务层接口
 *
 * @author liuxinlong@hotwater.com.cn
 * @version 1.0.0
 * @since 2022-07-07
 */
public interface BarBrowseService {
    /**
     * 论坛首页查询
     *
     * @return 论坛首页信息
     */
    Map<String, Object> queryHomeBar();

    /**
     * 分页查询板块发帖信息
     *
     * @param queryParam 请求信息
     * @return 板块发帖信息列表
     */
    List<Map<String, Object>> pageCard(Map<String, Object> queryParam);

    /**
     * 查询板块帖子总数
     *
     * @param queryParam 请求信息
     * @return 板块帖子总数
     */
    int getCardCount(Map<String, Object> queryParam);

    /**
     * 查询帖子信息
     *
     * @param id 帖子id
     * @return 帖子信息
     */
    Map<String,Object> getBarCard(String id);

    /**
     * 新增帖子信息
     *
     * @param barCard 帖子信息
     */
    void addBarCard(BarCard barCard);

    /**
     * 更新帖子信息
     *
     * @param barCard 帖子信息
     */
    void updateBarCard(BarCard barCard);

    /**
     * 删除帖子信息
     *
     * @param id 帖子信息id
     */
    void deleteBarCard(String id);


    /**
     * 分页查询发帖评论信息
     *
     * @param queryParam 请求信息
     * @return 发帖评论信息列表
     */
    List<Map<String, Object>> pageCardComment(Map<String, Object> queryParam);

    /**
     * 查询帖子评论总数
     *
     * @param queryParam 请求信息
     * @return 帖子评论总数
     */
    int getCardCommentCount(Map<String, Object> queryParam);

    /**
     * 新增评论信息
     *
     * @param barComment 评论信息
     */
    void addComment(BarComment barComment);

    /**
     * 更新评论信息
     *
     * @param barComment 评论信息
     */
    void updateComment(BarComment barComment);

    /**
     * 删除评论信息
     *
     * @param id 评论信息id
     */
    void deleteComment(String id);

    /**
     * 点赞发帖
     *
     * @param id 帖子id
     */
    void likeCard(String id);

    /**
     * 点赞评论信息
     *
     * @param id 评论信息id
     */
    void likeComment(String id);

    /**
     * 用户签到
     *
     * @return 签到信息
     */
    Map<String, Object> userSign();

    /**
     * 查询用户积分记录
     *
     * @param queryParam 查询参数
     * @return 用户积分记录
     */
    List<Map<String, Object>> queryPointRecord(Map<String, Object> queryParam);

    /**
     * 查询用户积分记录数量
     *
     * @param queryParam 查询参数
     * @return 用户积分记录数量
     */
    int getPointRecordCount(Map<String, Object> queryParam);

    /**
     * 查询论坛抽奖奖品信息
     *
     * @param luckId 活动id
     * @return 论坛抽奖奖品信息
     */
    List<Map<String, Object>> queryLuckPrizeList(String luckId);

    /**
     * 轮播信息查询
     *
     * @return 轮播信息列表
     */
    List<Map<String, Object>> queryCarouselList();

    /**
     * 更新排行榜缓存
     *
     * @param userId 用户id
     */
     void updateRankingCache(String userId);
}
